package com.qdxwx.data.service.course;


import com.qdxwx.common.page.PageRequest;
import com.qdxwx.models.course.CourseDTO;
import com.qdxwx.models.course.CourseNode;
import com.qdxwx.models.course.CourseStudyHistory;

import java.util.List;

/**
 * CourseStudyHistory接口
 * Qdx NetSchool Platform
 * @author qdxwx
 * @updateTime 2022/5/25
 * @description
 */
public interface CourseStudyHistoryService {

    /**
     * 添加CourseStudyHistory
     */
    int insert(CourseStudyHistory courseStudyHistory);

    /**
     * 添加播放记录和播放次数
     */
    void playerTimes(CourseStudyHistory courseStudyHistory);

    /**
     * 修改CourseStudyHistory
     */
    void update(CourseStudyHistory courseStudyHistory);


    /**
     * 根据条件获取CourseStudyHistory列表
     * @param courseStudyHistory 查询条件
     * @return List<CourseStudyHistory>
     */
    List<CourseStudyHistory> getList(CourseStudyHistory courseStudyHistory);

    List<CourseStudyHistory> getList(CourseStudyHistory courseStudyHistory, PageRequest form);

    int count(CourseStudyHistory courseStudyHistory);
    /**
     * 查看 某人的最近一条学习记录
     */
    CourseStudyHistory getLastByUserId(long userId);
    /**
     * 查看 某人指定课程的最近一条学习记录
     */
    CourseStudyHistory getLastByUserId(long userId, int courseId);

    int deleteByIds(String ids);

    /**
     * 设置学习状态标识
     * @param nodeTrees 查询条件
     */
    void setIsStudy(List<CourseNode> nodeTrees, List<CourseStudyHistory> courseStudyHistories);
    /**
     * 设置学习状态标识
     * @param nodeTrees 查询条件
     */
    void setIsStudy(List<CourseNode> nodeTrees, long userId, int courseId);

    /**
     * 给课程设置上学习进度
     * @param courseList 课程列表
     * @param userId 用户id
     */
    void setStudyPercent(List<CourseDTO> courseList, long userId);
    /**
     * 给课程设置上学习进度

     * @param course 课程
     * @param userId 用户id
     */
    void setStudyPercent(CourseDTO course, long userId);

    int updateCombine(long userId, long userId1);
}